﻿using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;

using NUnit.Framework;
using PeliGo.DataModel;
using PeliGo.BL;


namespace UnitTestProject1
{
   

    [TestFixture]
    public class UnitTest1
    {
        [Test]
        public void T1AddGenero()
        {
            
            bool correcto = false;
            //testqwert
            String error = "";
            try
            {
                Genero aux = new Genero();
                aux.NGenero = "testGenero";
                aux.Estado = 1;
                PeliGoEntities1 datacontext = new PeliGoEntities1();
                datacontext.Genero.Add(aux);
                datacontext.SaveChanges();
                correcto = true;
            }
            catch (Exception e)
            {

                Console.WriteLine("error " + e.Message);
                error = e.Message;
                correcto = false;
            }
            NUnit.Framework.Assert.AreEqual(true, correcto, "error: " + error);
        }


        [Test]
        public void T2AddFormato()
        {
            bool correcto = false;
            String error = "";
            try
            {
                Formato aux = new Formato();
                aux.NFormato = "testFormato";
                aux.Estado = 1;
                PeliGoEntities1 datacontext = new PeliGoEntities1();
                datacontext.Formato.Add(aux);
                datacontext.SaveChanges();
              
                correcto = true;
            }
            catch (Exception e)
            {

                Console.WriteLine("error " + e.Message);
                error = e.Message;
                correcto = false;
            }
            NUnit.Framework.Assert.AreEqual(true, correcto, "error: " + error);
        }



        

        [Test]
        public void T3AddPelicula()
        {
            bool correcto = false;
            String error = "";
            try
            {
                Pelicula peli = new Pelicula();
                PeliculaBL aux2 = new PeliculaBL();
                peli.NPelicula = "Pinguinos";
                PeliGoEntities1 datacontext = new PeliGoEntities1();
                GeneroBL gen = new GeneroBL();
                Genero ad = gen.ObtenerGeneroID("testGenero");
                peli.GeneroId = ad.GeneroId;
                peli.Argumento = "cositas lorem ipsum";
                peli.Estado = 1;
                aux2.AgregarPelicula(peli);
                correcto = true;
            }
            catch (Exception e)
            {

                Console.WriteLine("error " + e.Message);
                error = e.Message;
                correcto = false;
            }
            NUnit.Framework.Assert.AreEqual(true, correcto, "error: " + error);
        }

        [Test]
        public void T4AddEjemplar()
        {
            bool correcto = false;
            String error = "";
            try
            {
                PeliGoEntities1 datacontext = new PeliGoEntities1();
                Pelicula peli = new Pelicula();
                PeliculaBL aux2 = new PeliculaBL();
                FormatoBL formatobl = new FormatoBL();
               Ejemplar objEjemplar = new Ejemplar();
                EjemplarBL objEjemplarBL = new EjemplarBL();
                objEjemplar.PeliculaId = (aux2.ObtenerPeliculaID("Pinguinos")).PeliculaId;
                objEjemplar.FormatoId = formatobl.ObtenerFormatoID("testFormato").FormatoId;
                objEjemplar.PrecioActual = 10;
                objEjemplar.Stock = 1;
                objEjemplar.PromocionId = 1;
                objEjemplar.Estado = 1;
                datacontext.Ejemplar.Add(objEjemplar);
                datacontext.SaveChanges();

             
                datacontext.Ejemplar.Remove(objEjemplar);
                datacontext.SaveChanges();
                correcto = true;


            }
            catch (Exception e)
            {

                Console.WriteLine("error " + e.Message);
                error = e.Message;
                correcto = false;
            }
            NUnit.Framework.Assert.AreEqual(true, correcto, "error: " + error);
        }


        [Test]
        public void T6Delete1Pelicula()
        {
            bool correcto = false;
            String error = "";
            try
            {
                PeliculaBL aux2 = new PeliculaBL();
                Pelicula peli = aux2.ObtenerPeliculaID("Pinguinos");
                int id = peli.PeliculaId;
                aux2.EliminarPelicula(id);
                correcto = true;
            }
            catch (Exception e)
            {

                Console.WriteLine("error " + e.Message);
                error = e.Message;
                correcto = false;
            }
            NUnit.Framework.Assert.AreEqual(true, correcto, "error: " + error);
        }

        [Test]
        public void T7DeleteFormato()
        {
            bool correcto = false;
            String error = "";
            try
            {
                PeliGoEntities1 datacontext = new PeliGoEntities1();
                FormatoBL aux = new FormatoBL();
                Formato ad = aux.ObtenerFormatoID("testFormato");


                if (ad != null)
                {
                    ad.Estado = 0;
                    datacontext.SaveChanges();
                    correcto = true;
                }


            }
            catch (Exception e)
            {

                Console.WriteLine("error " + e.Message);
                error = e.Message;
                correcto = false;
            }
            NUnit.Framework.Assert.AreEqual(true, correcto, "error: " + error);
        }

        [Test]
        public void T8DeleteGenero()
        {
            bool correcto = false;
            String error = "";
            try
            {
                PeliGoEntities1 datacontext = new PeliGoEntities1();
                GeneroBL aux = new GeneroBL();
                Genero ad = aux.ObtenerGeneroID("testGenero");


                if (ad != null)
                {
                    ad.Estado = 0;
                    datacontext.SaveChanges();
                    correcto = true;
                }


            }
            catch (Exception e)
            {

                Console.WriteLine("error " + e.Message);
                error = e.Message;
                correcto = false;
            }
            NUnit.Framework.Assert.AreEqual(true, correcto, "error: " + error);
        }
      

    }
}
